package com.example;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

/**
 * 创建一个集合，每次向集合中添加一个 1MB 的 byte 数组
 * 启动时指定JVM选项：
 *      -XX:+HeapDumpOnOutOfMemoryError、-XX:HeapDumpPath=*** 用于内存溢出时生成 Heapdump 文件
 *      -Xmx50M 指定JVM堆内存大小，快速模拟OOM
 *
 */
public class OOMDemo01 {

    private static final int LENGTH = 1024;
    public static void main(String[] args) throws InterruptedException {
        List<byte[]> list = new ArrayList<>();
        for (int i = 0; i < LENGTH; i++) {
            TimeUnit.SECONDS.sleep(1);
            list.add(new byte[LENGTH * LENGTH]);
            System.out.println("alreday add " + i + "MB");
        }
    }

}
